/** 
 * Classe contenente i metodi per la verifica dei campi dei vari form
 * @author Alessandro  Nasso
 * @version  2.0
 */

package beans;

//------------------------------------- import -------------------------------------------------------------
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.text.*; 
//----------------------------------------------------------------------------------------------------------


public class VerificaCampi {

	private Pattern pattern=null;
	private Matcher matcher=null;
	private Integer ora=null,
			min=null,
			mese=null;


	public VerificaCampi()
	{
		pattern=null;
		matcher=null;
	}

	// verifica l'e mail
	public boolean verificaEmail(String email) {

		// Compila l’espressione regolare
		// qui utilizzo matches perchè con find anche una espressione del tipo pippo@po.it@po.it andava bene
		pattern = Pattern.compile("[\\.'0-9a-zA-ZèéàùìòÒÈÉÀÙÌ]+@['0-9a-zA-ZèéàùìòÒÈÉÀÙÌ]+\\.[0-9a-zA-ZèéàùìòÒÈÉÀÙÌ]+");
		matcher = pattern.matcher(email);

		return matcher.matches();

	}

	// verifica un form generico
	public boolean verificaGenerica(String campo) {
		//controllo che non contenga occorrenze di caratteri che non siano  spazi, ', numeri, lettere
		pattern = Pattern.compile( "[^\\s'0-9a-zA-ZèéàùìòÒÈÉÀÙÌ]+" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}


	public boolean verificaClasse(String campo) {
		//controllo che non contenga occorrenze di caratteri che non siano caratteri base
		pattern = Pattern.compile( "[^a-zA-Z]" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}

	// verifica Username
	public boolean verificaUsername(String campo) {
		//controllo che non contenga occorrenze di caratteri che non siano  spazi, .,numeri,lettere
		pattern = Pattern.compile( "[^\\.'0-9A-Za-zèéàùìòÒÈÉÀÙÌ]+" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}


	// verifica Nome luogo
	public boolean verificaCitta(String campo) {
		//controllo che non contenga occorrenze di caratteri che non siano  spazi,lettere,'
		pattern = Pattern.compile( "[^\\s-'A-Za-zèéàùìòÒÈÉÀÙÌ]+" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}

	// verifica Nome nazione
	public boolean verificaNazione(String campo) {
		//controllo che non contenga occorrenze di caratteri che non siano  spazi,lettere,'
		pattern = Pattern.compile( "[^\\s'A-Za-zèéàùìòÒÈÉÀÙÌ]+" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}

	// verifica password
	public boolean verificaPassword(String campo) {
		//controllo che non contenga occorrenze di caratteri che non siano  .,numeri,lettere
		pattern = Pattern.compile( "[^\\.0-9A-Za-z]+" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}

	// verifica ora
	public boolean verificaOra(String campo) {
		//controllo che sia minore di 24
                try{
		ora=Integer.parseInt(campo); }
                catch(NumberFormatException e){return false;}

		return ((ora < 24) && (ora>=0));
	}


	// verifica min
	public boolean verificaMin(String campo) {	

                try{
		min=Integer.parseInt(campo); }
                catch(NumberFormatException e){return false;}
		
                return ((min < 60) && (min >=0));
        }

	// verifica ora
	public boolean verificaOrario(String campo){
                //suppongo che ci sia un : in mezzo
                 String[] valori=new String[2];
                 valori=campo.split(":",2); 

		return ((verificaMin(valori[1])) && (verificaOra(valori[0])));
	}

	// verifica mese
	public boolean verificaMese(String campo) {

		mese=Integer.parseInt(campo);      

		return ((mese < 13) && (mese>0));
	}


	// verifica una data nel formato gg-mm-aaaa
	public boolean verificaData(String campo) {
		try {
			SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
			formatter.setLenient(false) ;
			formatter.parse(campo) ;
			return true;
		} catch ( Exception exception) {
			return false;
		}
	}

	// verifica anno (verifica se è un intero)
	public boolean verificaAnno(String campo) {

		try  
		{  
			Integer.parseInt( campo );  
			return true;  
		}  
		catch( Exception e)  
		{  
			return false;  
		}  
	}

	// verifica codice aeroporto
	public boolean verificaAero(String campo) {
		//solo 3 lettere
		pattern = Pattern.compile( "[^A-Za-z]{3}" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}


	// verifica codice idVolo
	public boolean verificaIdVolo(String campo) {
		//solo 3 lettere
		pattern = Pattern.compile( "[^a-zA-Z0-9 ]{3}" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}

	// verifica codice compagnia+ id volo
	public boolean verificaIdentVolo(String campo) {
		//solo 3 lettere
		pattern = Pattern.compile( "[^a-zA-Z0-9 ]{10}" );
		matcher = pattern.matcher(campo);      
		return !matcher.find();
	}

}



